From: Daniel GarcĂ­a Moreno Date: Fri, 17 Jan 2020 09:12:52 +0000 (+0100) Subject: animation: Scale animation actor for HiDPI X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~95 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=5b2c604fe4f6d78727fff4d35224f5e13e8fc421;p=gnome-shell.git animation: Scale animation actor for HiDPI The Animation class inherits from St.Bin and manages the scale factor in the image loading, but the widget size doesn't change and doesn't depend on the scale factor so when the scale factor is different from 1 the widget size doesn't match the image size. This patch resizes the Animation widget using the scale factor so the widget will match the animation images sizes. Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1746 --- diff --git a/js/ui/animation.js b/js/ui/animation.js index 5cd9f3a20..2344851ad 100644 --- a/js/ui/animation.js +++ b/js/ui/animation.js @@ -12,14 +12,22 @@ var SPINNER_ANIMATION_DELAY = 1000; var Animation = GObject.registerClass( class Animation extends St.Bin { _init(file, width, height, speed) { - super._init({ width, height }); + const themeContext = St.ThemeContext.get_for_stage(global.stage); + + super._init({ + width: width * themeContext.scale_factor, + height: height * themeContext.scale_factor, + }); + this.connect('destroy', this._onDestroy.bind(this)); this.connect('resource-scale-changed', this._loadFile.bind(this, file, width, height)); - let themeContext = St.ThemeContext.get_for_stage(global.stage); this._scaleChangedId = themeContext.connect('notify::scale-factor', - this._loadFile.bind(this, file, width, height)); + () => { + this._loadFile(file, width, height); + this.set_size(width * themeContext.scale_factor, height * themeContext.scale_factor); + }); this._speed = speed;